[Looker21.14新機能]既存のデータから未来の値を予測する「Forecasting」を試してみる #looker
さがらです。
先日、Looker21.14がリリースされました。
このリリースノートの内、「Forecasting (未来値予測)」について試してみたので本ブログで内容をまとめてみます。
前提:この機能を使うために
まず、本ブログで紹介する機能を使うためには、「”管理”タブ➟Labs➟Experimental➟Forecasting」をONにしないといけません。
この機能をONにすることで、ExploreのVisualization欄に「Forecast」という項目が追加されます。これで準備OKです!
パパっと試してみる
あるECサイトの日別の売上に関して、過去90日間のデータを用いて今後1週間のデータを予測する、ということを最低限の設定だけで行ってみます。
Forecastの設定
必要なディメンションを選択し終えたら、「Forecast」をクリックします。すると、「Select fields」というオプションが出てくるので、こちらから予測を行いたいメジャーを選択します。
メジャーを選択すると、他のオプションが表示されます。今回は最低限の設定で予測を行うため、「Length」オプションに「7」と入力するだけにしておきます。
ここまで設定出来たら、後は実行するだけです!
予測結果を見てみる
どのように予測結果が表示されるのか確認してみます。
まず、DATA欄では下図のように表示されます。
予測結果と元々のデータが点線で別れており、かつ予測結果はフォントがイタリック体になり、末尾に「*」もついていますね。
次に、Visualizationではどう表示されるのかを見てみます。まずは折れ線グラフである「Line」ですが、予測結果は点線で表示されます。
棒グラフである「Column」にも対応しており、予測結果は実データに対して色味が薄くなった形式で表示されます。
各オプションについて
このForecastにはオプションが他にも2つ用意されているので、そちらについても試してみました。
Prediction Interval
こちらのオプションをONにすると、VISUALIZATIONでの予測結果上に上限と下限が設定されて、その範囲に色が付きます。
これは「Predection Interval」をONにすると、80~99の間で指定された固定値を選択できるのですが、「選択した値の割合で、予測結果のグラフ上に示された範囲内に実際の値もなりますよ」ということを示しているらしいです。
文章だけだとわかりづらいと思いますので、実際の事例を用いて説明します。
例えば、Prediction Intervalを99%にしてみると、「グラフ上に示した範囲内に、実際の値も99%の確率でおさまりますよ」ということを表しています。
一方で、Prediction Intervalを80%にしてみると、「グラフ上に示した範囲内に、実際の値も80%の確率でおさまりますよ」という意味合いになります。20%の確率で外れるという予測なので、グラフ上の予測範囲も99%で設定したときより狭まっているのがわかると思います。
Seasonality
このオプションをONにすることで、曜日や季節など、ある一定期間の間隔で繰り返し同じ傾向が表れやすいデータに対して、より効果的な予測結果を得られるようです。
Seasonalityにはオプションが3種類あるので、以下に例を示しておきます。「過去90日間の売上データを用いて、未来の30日間の売上を予測する」ということを行っております。
Seasonalityオフ
まずは、Seasonalityを何も行っていない時の結果です。この時点でもある程度周期的な特性に基づいて予測を行っているような気がしますよね。
Automatic
続いて、SeasonalityをONにして「Automatic」で実行してみます。…なのですが、Seasonalityをオフにしているときと全く同じ結果を示しています。
正直私も仕様がわからないのですが、SeasonalityをオフにしていてもLooker側が「これは周期性あるな!」と判断したら自動でSeasonalityを考慮した予測結果を出しているのでは、と感じました。
Custom
別のオプションである「Custom」は、任意の値を入力することで、SQLが返す結果に対して指定した値の行数を1つの周期と考え、予測を行います。
下図のように「14」を指定した場合は直近14行分つまり2週間の傾向に基づいて、予測結果を返しています。
また参考までに、下図は「7」を指定しているのですが、実はこの結果が上述の「Seasonalityオフ」「Automatic」と全く同じ結果を示していました。
「7」は1週間を示す値と同じなので、Looker側が「このデータは曜日特性があるから1週間のSeasonalityで出すのが良さそう!」と判断したのかもしれないですね…
None
「None」を設定すると、周期性を全く考慮しない結果を返します。 しかし、下図のようにあまり参考にならない結果となってしまいました…
所感
実際に触ってみて、オプションも色々と試してみましたが周期性のあるデータであれば、少し参考になる予測結果が得られるかな?という感触を得ました。
この機能でパパっと予測は出来るのですが、一概に予測と言ってもたくさんの手法がありますので、どういった手法が裏で動いているのが気になるところです。(自己回帰系のモデルだと予想していますが…)
まだまだこれからの機能だと思いますので、今後のアップデートに期待しています!